# -*- coding: UTF-8 -*-
# CircuitPython图片转换BMP格式工具
# Auth：乔楚|HonestQiao

'''
CircuitPython图片转换BMP格式工具
'''
# 前先安装PIL模块，命令：pip install Pillow
from PIL import Image

# -------- 以下部分根据实际情况修改 -------- #
# 原始图片列表：jpg、png、bmp均可，每行一个，逗号结尾
src_files = [
    "images/adafruit_products_Adafruit_ESP32-S3_TFT_Feather_Pinout.png",
    "images/test.jpg",
]

# 目标图片列表：后缀为bmp，与原始图片一一对应，每行一个，逗号结尾
dst_files = [
    "images/adafruit_products_Adafruit_ESP32-S3_TFT_Feather_Pinout.bmp",
    "images/bmp_image_for_cirpy.bmp",
]

# 设置目标显示屏大小
disp_size = (240, 135)

# -------- 以上部分根据实际情况修改 -------- #

# -------- 以下部分不用修改 -------- #
# 等比缩放图片
def scale_resize(w, h, w_max, h_max, img):
    r1 = 1.0 * w_max / w
    r2 = 1.0 * h_max / h
    r = min([r1, r2])
    r_wh = ( int(w*r), int(h*r) )
    return img.resize(r_wh, Image.Resampling.LANCZOS)

# 颜色数量
NUM_COLORS = 64

# 批量转换图片
print("CircuitPython图片转换BMP格式工具：")
for i in range(0, len(src_files)):
    src_file = src_files[i]
    dst_file = dst_files[i]
    print("[%d/%d] 转换 %s 为 %s " % (i+1, len(src_files), src_file, dst_file))
    img = Image.open(src_file)
    img = scale_resize(img.size[0], img.size[1], disp_size[0],disp_size[1],img)
    newimg = img.convert(mode='P', colors=NUM_COLORS)
    newimg.save(dst_file)

print("转换完成.")
# -------- 以上部分不用修改 -------- #